package cn.tedu.csmallproductzxj.service.impl;

import cn.tedu.csmallproductzxj.ex.ServiceException;
import cn.tedu.csmallproductzxj.mapper.AttributeTemplateMapper;
import cn.tedu.csmallproductzxj.pojo.dto.AttributeTemplateAddNewDTO;
import cn.tedu.csmallproductzxj.pojo.dto.AttributeTemplateUpdateDTO;
import cn.tedu.csmallproductzxj.pojo.entity.Album;
import cn.tedu.csmallproductzxj.pojo.entity.AttributeTemplate;
import cn.tedu.csmallproductzxj.pojo.vo.AlbumStandardVO;
import cn.tedu.csmallproductzxj.pojo.vo.AttributeTemplateStandardVO;
import cn.tedu.csmallproductzxj.service.IAttributeTemplateService;
import cn.tedu.csmallproductzxj.web.ServiceCode;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class AttributeTemplateImpl implements IAttributeTemplateService {
    @Autowired
    AttributeTemplateMapper attributeTemplateMapper;

    @Override
    public void addNew(AttributeTemplateAddNewDTO attributeTemplateAddNewDTO) {
        String name=attributeTemplateAddNewDTO.getName();
        int countName=attributeTemplateMapper.countByName(name);
        if(countName>0){
            String message="添加属性模板失败，名称已经被占用";
            throw new ServiceException(ServiceCode.OK,message);
        }

        AttributeTemplate attributeTemplate=new AttributeTemplate();
        BeanUtils.copyProperties(attributeTemplateAddNewDTO,attributeTemplate);
        attributeTemplateMapper.insertAttributeTemplate(attributeTemplate);
    }

    @Override
    public AttributeTemplateStandardVO getStandardById(Long id) {
        AttributeTemplateStandardVO queryResult=attributeTemplateMapper.getTemplateStandardById(id);
        if(queryResult==null){
            String message = "获取详情失败，尝试访问的数据不存在！";
            throw new ServiceException(ServiceCode.ERR_NOT_FOUND,message);
        }
        return queryResult;
    }

    @Override
    public void deleteAttributeTemplateMapperById(Long id) {
        AttributeTemplateStandardVO queryResult=attributeTemplateMapper.getTemplateStandardById(id);
        if(queryResult==null){
            String message = "获取详情失败，尝试访问的数据不存在！";
            throw new ServiceException(ServiceCode.ERR_NOT_FOUND,message);
        }

        attributeTemplateMapper.deleteAttributeTemplateMapperById(id);
    }

    @Override
    public void updateInfoById(Long id, AttributeTemplateUpdateDTO attributeTemplateUpdateDTO) {
        AttributeTemplateStandardVO queryResult=attributeTemplateMapper.getTemplateStandardById(id);
        if(queryResult==null){
            String message = "获取详情失败，尝试访问的数据不存在！";
            throw new ServiceException(ServiceCode.ERR_NOT_FOUND,message);
        }
        //修改的name 不允许出现其他相册的名称，自己的可以，（相当于不修改name)
        String name= attributeTemplateUpdateDTO.getName();
        int count=attributeTemplateMapper.countByNameAndNotId(id,name);
        if (count > 0) {
            String message = "修改相册详情失败，相册名称已经被占用！";
            throw new ServiceException(ServiceCode.ERR_CONFLICT, message);
        }

        AttributeTemplate attributeTemplate=new AttributeTemplate();
        BeanUtils.copyProperties(attributeTemplateUpdateDTO,attributeTemplate);
        attributeTemplateMapper.insertAttributeTemplate(attributeTemplate);
        attributeTemplateMapper.update(attributeTemplate);
    }


}
